# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

HAS_MISC_RULE = True

include('/ipc/chromium/chromium-config.mozbuild')

FINAL_LIBRARY = 'xul'

DEFINES['MOZ_APP_VERSION'] = '"%s"' % CONFIG['MOZ_APP_VERSION']

LOCAL_INCLUDES += [
    '/xpcom/build',
    '/xpcom/threads',
]

SPHINX_TREES['telemetry'] = 'docs'

if CONFIG['GNU_CXX']:
    CXXFLAGS += ['-Wno-error=shadow']

XPIDL_SOURCES += [
    'nsITelemetry.idl',
]

XPIDL_MODULE = 'telemetry'

EXPORTS.mozilla += [
    '!TelemetryEventEnums.h',
    '!TelemetryHistogramEnums.h',
    '!TelemetryScalarEnums.h',
    'ProcessedStack.h',
    'Telemetry.h',
    'TelemetryComms.h',
    'ThreadHangStats.h',
]

SOURCES += [
    'Telemetry.cpp',
    'TelemetryCommon.cpp',
    'TelemetryEvent.cpp',
    'TelemetryHistogram.cpp',
    'TelemetryScalar.cpp',
    'WebrtcTelemetry.cpp',
]

EXTRA_COMPONENTS += [
    'TelemetryStartup.js',
    'TelemetryStartup.manifest'
]

EXTRA_JS_MODULES += [
    'GCTelemetry.jsm',
    'TelemetryArchive.jsm',
    'TelemetryController.jsm',
    'TelemetryEnvironment.jsm',
    'TelemetryLog.jsm',
    'TelemetryReportingPolicy.jsm',
    'TelemetrySend.jsm',
    'TelemetrySession.jsm',
    'TelemetryStorage.jsm',
    'TelemetryTimestamps.jsm',
    'TelemetryUtils.jsm',
    'ThirdPartyCookieProbe.jsm',
    'UITelemetry.jsm',
]

GENERATED_FILES = [
    'TelemetryEventData.h',
    'TelemetryEventEnums.h',
    'TelemetryHistogramData.inc',
    'TelemetryHistogramEnums.h',
    'TelemetryScalarData.h',
    'TelemetryScalarEnums.h',
]

# Generate histogram files.
histogram_files = [
    'Histograms.json',
    '/dom/base/UseCounters.conf',
    '/dom/base/nsDeprecatedOperationList.h',
]

data = GENERATED_FILES['TelemetryHistogramData.inc']
data.script = 'gen-histogram-data.py'
data.inputs = histogram_files

enums = GENERATED_FILES['TelemetryHistogramEnums.h']
enums.script = 'gen-histogram-enum.py'
enums.inputs = histogram_files

# Generate scalar files.
scalar_files = [
    'Scalars.yaml',
]

scalar_data = GENERATED_FILES['TelemetryScalarData.h']
scalar_data.script = 'gen-scalar-data.py'
scalar_data.inputs = scalar_files

scalar_enums = GENERATED_FILES['TelemetryScalarEnums.h']
scalar_enums.script = 'gen-scalar-enum.py'
scalar_enums.inputs = scalar_files

# Generate event files.
event_files = [
    'Events.yaml',
]

event_data = GENERATED_FILES['TelemetryEventData.h']
event_data.script = 'gen-event-data.py'
event_data.inputs = event_files

event_enums = GENERATED_FILES['TelemetryEventEnums.h']
event_enums.script = 'gen-event-enum.py'
event_enums.inputs = event_files

